/************************************************************************
 * Este archivo, representa la interfaz principal del sistema en donde
 * se refleja el manejo de clientes, vehiculos, estadias y movimientos
 * de caja
 * 
 * @system: veco-system
 * @description: Sistema de control vehicular
 * @version: 1.0
 * @Copyright © 2013 
 * 
 * @authores:
 * 
 *      > Alberione, Fernando    <falberione_037@gmail.com>
 * 
 *      > Boretto, Martin        <martinboretto@gmail.com>
 * 
 *      > Lenarduzzi, Federico   <fedeatenas@gmail.com>
 * 
 *      > Ocampo, Emanuel        <eocampo86@gmail.com>
 *
 *************************************************************************/

package Interfaces;

import SistemaCocheras.manejadorCaja;
import SistemaCocheras.manejadorCochera;
import SistemaCocheras.manejadorEstadia;
import SistemaCocheras.manejadorUsuarioAdmin;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;


public class sistemaPrincipal extends javax.swing.JFrame {

    private int capacidad = 0;
    private Connection conexion = null;
    private String dniUsuarioActual = "";
    private String usuarioActual = "";


    // ---------------------------------------------------------
    // ------- Seccion de constructores de la clase
    // ---------------------------------------------------------    

    /**
     * Constructor vacio
     */     
    public sistemaPrincipal() {
        this.setExtendedState(MAXIMIZED_BOTH); 
        initComponents();
    }// Fin constructor

    
    /**
     * Constructor NO vacio
     * @param c Representa la conexion de la base de datos
     * @param dni Representa el dni del usuario que ingreso al sistema
     * @param tipoUsuario Representa el tipo de usuario (usuario o administrador)
     * @throws SQLException 
     */
    public sistemaPrincipal(Connection c, String dni, int tipoUsuario) throws SQLException{
        this.conexion = c;
        manejadorCochera mc = new manejadorCochera(this.conexion);
        manejadorUsuarioAdmin mua = new manejadorUsuarioAdmin(this.conexion);
        ResultSet usuario = null;
        this.capacidad = mc.getCantidad();
        this.dniUsuarioActual = dni;
        initComponents();
        sistemaPrincipal.this.setExtendedState(MAXIMIZED_BOTH); 
        actualizarVistaEstadia();
        llenarCamposDeTexto();        
        if (tipoUsuario == 0){
            // Si es usuario no tiene acceso a los abm de usuario, administrador
            // ni a la configuracion de las tarifas de la cochera
            this.jMenuUsuarios.setVisible(false);
            this.jMenuConfiguracion.setVisible(false);
            this.jMenuAdministradores.setVisible(false);
        }
        usuario = mua.buscarUsuarioAdmin(this.dniUsuarioActual);
        usuario.next();
        this.usuarioActual = usuario.getString("nombre")+" "+usuario.getString("apellido");
        this.nombreUsuario.setText(this.usuarioActual);
    }// Fin constructor
    
    
    
    // ---------------------------------------------------------
    // ------- Seccion de metodos publicos 
    // ---------------------------------------------------------     

    /**
     * Metodo encargado de actualizar la tabla con la informacion de los vehiculos
     * que han ingresado en la cochera
     * @throws SQLException 
     */
    public void actualizarVistaEstadia () throws SQLException{
        manejadorEstadia mc = new manejadorEstadia(this.conexion);
        ResultSet listaClientes = mc.buscarEstadiaOcupado();
        String[] columnas = {"Lugar", "Domino", "Hora de Ingreso", "Tipo", "Fecha de Ingreso"};
        int aux =0;
        String[][] filas = new String[this.capacidad][columnas.length];
        while (listaClientes.next()) {
            // Se rellena la tabla de la vista principal con los valores correspondientes
            filas[aux][0] = listaClientes.getString("lugarcochera");                        
            filas[aux][1] = listaClientes.getString("dominiovehiculo");                     
            filas[aux][2] = listaClientes.getString("horaingreso");                         
            filas[aux][3] = tipoDeMovil(listaClientes.getObject("tipovehiculo"));           
            filas[aux][4] = listaClientes.getString("fechaingreso");                        
            aux++;                                                                          
        }                                                                                   
        DefaultTableModel tabla = new DefaultTableModel(filas,columnas);
        tabla.setDataVector(filas, columnas);
        this.tablaEstadias.setModel(tabla);
        llenarCamposDeTexto();
        this.setVisible(true);
    }// Fin actualizarVistaEstadia
    
    
    /**
     * Metodo encargado de actualizar los campos de texto con la informacion
     * correspondiente
     */
    public void llenarCamposDeTexto(){
        try {
            manejadorEstadia me = new manejadorEstadia(this.conexion);
            int cantLugaresL = me.obtenerLugaresDisponibles();
            int cantClientes = me.obtenerNumeroDeClientes();
            int cantLugaresO = me.obtenerLugaresOcupados();
            int proximoLugar = me.calcularProximaPosicion(me.obtenerPosicionesOcupados(), this.capacidad);
            String cantLugaresOTexto = Integer.toString(cantLugaresO);
            String cantClientesTexto = Integer.toString(cantClientes);
            String cantLugaresLTexto = Integer.toString(cantLugaresL);
            String proximoLugarTexto = Integer.toString(proximoLugar);
            this.jLabelLugaresDisponibles.setText(cantLugaresLTexto);
            this.jLabelClientes.setText(cantClientesTexto);
            this.jLabelLugaresOcupados.setText(cantLugaresOTexto);
            this.jLabelProximoLugar.setText(proximoLugarTexto);
        } 
        catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Se ha producido un error interno al intentar actualizar los campos de texto de la "
                    + "interfaz", "Error de interfaz", JOptionPane.ERROR_MESSAGE);
        }
    }// Fin llenarCamposDeTexto
    
    
    /**
     * Metodo encargado de levantar una instancia de la clase
     * @param args 
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new sistemaPrincipal().setVisible(true);
            }
        });
    }// Fin main    
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jMenuBar2 = new javax.swing.JMenuBar();
        jMenu5 = new javax.swing.JMenu();
        jMenu6 = new javax.swing.JMenu();
        jMenuBar3 = new javax.swing.JMenuBar();
        jMenu7 = new javax.swing.JMenu();
        jMenu8 = new javax.swing.JMenu();
        botonIngresoV = new javax.swing.JButton();
        BotonEgresoV = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tablaEstadias = new javax.swing.JTable();
        jButtonActualizarLista = new javax.swing.JButton();
        jLabelDesarrolladores = new javax.swing.JLabel();
        jButtonMovimientoCaja = new javax.swing.JButton();
        botonArqueoUsuario = new javax.swing.JToggleButton();
        botonArqueoCaja = new javax.swing.JButton();
        botonCerrarSesion = new javax.swing.JButton();
        jLabelUsuarioCorriente = new javax.swing.JLabel();
        nombreUsuario = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jLabelLugaresOcupadosT = new javax.swing.JLabel();
        jLabelClientesT = new javax.swing.JLabel();
        jLabelLugaresDisponiblesT = new javax.swing.JLabel();
        jLabelLugaresOcupados = new javax.swing.JLabel();
        jLabelLugaresDisponibles = new javax.swing.JLabel();
        jLabelClientes = new javax.swing.JLabel();
        labelProximaLugar = new javax.swing.JLabel();
        jLabelProximoLugar = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenuArchivo = new javax.swing.JMenu();
        jMenuItemAbrirCarpetaArqueos = new javax.swing.JMenuItem();
        jMenuCliente = new javax.swing.JMenu();
        jMenuItemRegistrarPago = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JPopupMenu.Separator();
        jMenuItemNuevoCliente = new javax.swing.JMenuItem();
        jMenuItemModificarCliente = new javax.swing.JMenuItem();
        jMenuItemEliminarCliente = new javax.swing.JMenuItem();
        jSeparator2 = new javax.swing.JPopupMenu.Separator();
        jMenuItemMostrarDatosDeClientes = new javax.swing.JMenuItem();
        jMenuVehiculos = new javax.swing.JMenu();
        jMenuItemNuevoVehiculo = new javax.swing.JMenuItem();
        jMenuItemModificarVehiculo = new javax.swing.JMenuItem();
        jMenuItemEliminarVehiculo = new javax.swing.JMenuItem();
        jMenuUsuarios = new javax.swing.JMenu();
        jMenuItemNuevoUsuario = new javax.swing.JMenuItem();
        jMenuItemModificarUsuario = new javax.swing.JMenuItem();
        jMenuItemEliminarUsuario = new javax.swing.JMenuItem();
        jMenuAdministradores = new javax.swing.JMenu();
        jMenuItemNuevoAdministrador = new javax.swing.JMenuItem();
        jMenuItemModificarAdministrador = new javax.swing.JMenuItem();
        jMenuItemEliminarAdministrador = new javax.swing.JMenuItem();
        jSeparator3 = new javax.swing.JPopupMenu.Separator();
        jMenuItemArqueoPeriodico = new javax.swing.JMenuItem();
        jMenuConfiguracion = new javax.swing.JMenu();
        jMenuItemConfigurarCochera = new javax.swing.JMenuItem();
        jMenuAyuda = new javax.swing.JMenu();
        jMenuItemContacto = new javax.swing.JMenuItem();

        jMenu5.setText("File");
        jMenuBar2.add(jMenu5);

        jMenu6.setText("Edit");
        jMenuBar2.add(jMenu6);

        jMenu7.setText("File");
        jMenuBar3.add(jMenu7);

        jMenu8.setText("Edit");
        jMenuBar3.add(jMenu8);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Sistema de cocheras B&B");
        setBackground(new java.awt.Color(255, 255, 255));
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setFocusCycleRoot(false);
        setUndecorated(true);

        botonIngresoV.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        botonIngresoV.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Forward.png"))); // NOI18N
        botonIngresoV.setText("Ingreso Vehículo");
        botonIngresoV.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        botonIngresoV.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonIngresoVActionPerformed(evt);
            }
        });

        BotonEgresoV.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        BotonEgresoV.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Back.png"))); // NOI18N
        BotonEgresoV.setText("Egreso Vehículo");
        BotonEgresoV.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        BotonEgresoV.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BotonEgresoVActionPerformed(evt);
            }
        });

        tablaEstadias.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 51, 255), 1, true));
        tablaEstadias.setFont(new java.awt.Font("Tahoma", 1, 16));
        tablaEstadias.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null}
            },
            new String [] {
                "Lugar", "Dominio", "Hora de Ingreso", "Tipo", "Fecha de Ingreso"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(tablaEstadias);

        jButtonActualizarLista.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jButtonActualizarLista.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Refresh.png"))); // NOI18N
        jButtonActualizarLista.setText("Actualizar Lista");
        jButtonActualizarLista.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButtonActualizarLista.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonActualizarListaActionPerformed(evt);
            }
        });

        jLabelDesarrolladores.setFont(new java.awt.Font("Arial Narrow", 1, 12));
        jLabelDesarrolladores.setText("Diseñado y Desarrollado por Battistini, Luciano - Boretto, Martín - Copyright © 2011");

        jButtonMovimientoCaja.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jButtonMovimientoCaja.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Portfolio.png"))); // NOI18N
        jButtonMovimientoCaja.setText("Movimiento de Caja");
        jButtonMovimientoCaja.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButtonMovimientoCaja.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonMovimientoCajaActionPerformed(evt);
            }
        });

        botonArqueoUsuario.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        botonArqueoUsuario.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Stationery.png"))); // NOI18N
        botonArqueoUsuario.setText("Arqueo por Usuario");
        botonArqueoUsuario.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        botonArqueoUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonArqueoUsuarioActionPerformed(evt);
            }
        });

        botonArqueoCaja.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        botonArqueoCaja.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Stats.png"))); // NOI18N
        botonArqueoCaja.setText("Arqueo de Caja Diario");
        botonArqueoCaja.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        botonArqueoCaja.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonArqueoCajaActionPerformed(evt);
            }
        });

        botonCerrarSesion.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        botonCerrarSesion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Options.png"))); // NOI18N
        botonCerrarSesion.setText("Cerrar sesión");
        botonCerrarSesion.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(0, 102, 204)));
        botonCerrarSesion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCerrarSesionActionPerformed(evt);
            }
        });

        jLabelUsuarioCorriente.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabelUsuarioCorriente.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/User.png"))); // NOI18N

        nombreUsuario.setFont(new java.awt.Font("Copperplate Gothic Light", 3, 12)); // NOI18N

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Estadísticas", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Century Schoolbook", 2, 14))); // NOI18N

        jLabelLugaresOcupadosT.setText("Lugares Ocupados :");

        jLabelClientesT.setText("Clientes de la Cochera :");

        jLabelLugaresDisponiblesT.setText("Lugares Disponibles :");

        jLabelLugaresOcupados.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        jLabelLugaresDisponibles.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        jLabelClientes.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        labelProximaLugar.setText("Próximo lugar disponible:");

        jLabelProximoLugar.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabelLugaresOcupadosT, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabelLugaresDisponiblesT, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 137, Short.MAX_VALUE))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelLugaresDisponibles))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelLugaresOcupados, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabelClientesT, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelClientes))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(labelProximaLugar, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
                        .addComponent(jLabelProximoLugar)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabelClientes, jLabelLugaresDisponibles, jLabelLugaresOcupados, jLabelProximoLugar});

        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabelLugaresOcupados, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabelLugaresOcupadosT))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabelLugaresDisponiblesT, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabelLugaresDisponibles, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabelClientesT)
                            .addComponent(jLabelClientes))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(labelProximaLugar)
                            .addComponent(jLabelProximoLugar))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabelClientes, jLabelLugaresDisponibles, jLabelLugaresOcupados, jLabelProximoLugar});

        jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jLabelClientesT, jLabelLugaresDisponiblesT, jLabelLugaresOcupadosT, labelProximaLugar});

        jMenuArchivo.setText("Archivo");

        jMenuItemAbrirCarpetaArqueos.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemAbrirCarpetaArqueos.setText("Abrir Carpeta de Arqueos de Caja");
        jMenuItemAbrirCarpetaArqueos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemAbrirCarpetaArqueosActionPerformed(evt);
            }
        });
        jMenuArchivo.add(jMenuItemAbrirCarpetaArqueos);

        jMenuBar1.add(jMenuArchivo);

        jMenuCliente.setText("Clientes");

        jMenuItemRegistrarPago.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemRegistrarPago.setText("Registrar Pago");
        jMenuItemRegistrarPago.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemRegistrarPagoActionPerformed(evt);
            }
        });
        jMenuCliente.add(jMenuItemRegistrarPago);
        jMenuCliente.add(jSeparator1);

        jMenuItemNuevoCliente.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemNuevoCliente.setText("Nuevo Cliente");
        jMenuItemNuevoCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemNuevoClienteActionPerformed(evt);
            }
        });
        jMenuCliente.add(jMenuItemNuevoCliente);

        jMenuItemModificarCliente.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_M, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemModificarCliente.setText("Modificar Cliente");
        jMenuItemModificarCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemModificarClienteActionPerformed(evt);
            }
        });
        jMenuCliente.add(jMenuItemModificarCliente);

        jMenuItemEliminarCliente.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemEliminarCliente.setText("Eliminar Cliente");
        jMenuItemEliminarCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemEliminarClienteActionPerformed(evt);
            }
        });
        jMenuCliente.add(jMenuItemEliminarCliente);
        jMenuCliente.add(jSeparator2);

        jMenuItemMostrarDatosDeClientes.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemMostrarDatosDeClientes.setText("Mostrar Datos de Clientes");
        jMenuItemMostrarDatosDeClientes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemMostrarDatosDeClientesActionPerformed(evt);
            }
        });
        jMenuCliente.add(jMenuItemMostrarDatosDeClientes);

        jMenuBar1.add(jMenuCliente);

        jMenuVehiculos.setText("Vehiculos");

        jMenuItemNuevoVehiculo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemNuevoVehiculo.setText("Nuevo Vehiculo");
        jMenuItemNuevoVehiculo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemNuevoVehiculoActionPerformed(evt);
            }
        });
        jMenuVehiculos.add(jMenuItemNuevoVehiculo);

        jMenuItemModificarVehiculo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_M, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemModificarVehiculo.setText("Modificar Vehiculo");
        jMenuItemModificarVehiculo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemModificarVehiculoActionPerformed(evt);
            }
        });
        jMenuVehiculos.add(jMenuItemModificarVehiculo);

        jMenuItemEliminarVehiculo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemEliminarVehiculo.setText("Eliminar Vehiculo");
        jMenuItemEliminarVehiculo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemEliminarVehiculoActionPerformed(evt);
            }
        });
        jMenuVehiculos.add(jMenuItemEliminarVehiculo);

        jMenuBar1.add(jMenuVehiculos);

        jMenuUsuarios.setText("Usuarios");

        jMenuItemNuevoUsuario.setText("Nuevo Usuario");
        jMenuItemNuevoUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemNuevoUsuarioActionPerformed(evt);
            }
        });
        jMenuUsuarios.add(jMenuItemNuevoUsuario);

        jMenuItemModificarUsuario.setText("Modificar Usuario");
        jMenuItemModificarUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemModificarUsuarioActionPerformed(evt);
            }
        });
        jMenuUsuarios.add(jMenuItemModificarUsuario);

        jMenuItemEliminarUsuario.setText("Eliminar Usuario");
        jMenuItemEliminarUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemEliminarUsuarioActionPerformed(evt);
            }
        });
        jMenuUsuarios.add(jMenuItemEliminarUsuario);

        jMenuBar1.add(jMenuUsuarios);

        jMenuAdministradores.setText("Administradores");

        jMenuItemNuevoAdministrador.setText("Nuevo Administrador");
        jMenuItemNuevoAdministrador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemNuevoAdministradorActionPerformed(evt);
            }
        });
        jMenuAdministradores.add(jMenuItemNuevoAdministrador);

        jMenuItemModificarAdministrador.setText("Modificar Administrador");
        jMenuItemModificarAdministrador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemModificarAdministradorActionPerformed(evt);
            }
        });
        jMenuAdministradores.add(jMenuItemModificarAdministrador);

        jMenuItemEliminarAdministrador.setText("Eliminar Administrador");
        jMenuItemEliminarAdministrador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemEliminarAdministradorActionPerformed(evt);
            }
        });
        jMenuAdministradores.add(jMenuItemEliminarAdministrador);
        jMenuAdministradores.add(jSeparator3);

        jMenuItemArqueoPeriodico.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemArqueoPeriodico.setText("Arqueo Periodico");
        jMenuItemArqueoPeriodico.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemArqueoPeriodicoActionPerformed(evt);
            }
        });
        jMenuAdministradores.add(jMenuItemArqueoPeriodico);

        jMenuBar1.add(jMenuAdministradores);

        jMenuConfiguracion.setText("Configuracion");

        jMenuItemConfigurarCochera.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemConfigurarCochera.setText("Configurar Cochera");
        jMenuItemConfigurarCochera.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemConfigurarCocheraActionPerformed(evt);
            }
        });
        jMenuConfiguracion.add(jMenuItemConfigurarCochera);

        jMenuBar1.add(jMenuConfiguracion);

        jMenuAyuda.setText("Ayuda");

        jMenuItemContacto.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemContacto.setText("Contacto");
        jMenuItemContacto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemContactoActionPerformed(evt);
            }
        });
        jMenuAyuda.add(jMenuItemContacto);

        jMenuBar1.add(jMenuAyuda);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(botonIngresoV, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(BotonEgresoV, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonActualizarLista, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButtonMovimientoCaja, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(botonArqueoUsuario, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(botonArqueoCaja, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabelUsuarioCorriente)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(nombreUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 336, Short.MAX_VALUE)
                                .addComponent(botonCerrarSesion, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 930, Short.MAX_VALUE)))
                    .addComponent(jLabelDesarrolladores, javax.swing.GroupLayout.PREFERRED_SIZE, 395, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelUsuarioCorriente)
                    .addComponent(nombreUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(botonIngresoV, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(BotonEgresoV, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jButtonActualizarLista)
                        .addGap(18, 18, 18)
                        .addComponent(jButtonMovimientoCaja, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(botonArqueoUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(botonArqueoCaja, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 627, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(23, 23, 23)
                        .addComponent(jLabelDesarrolladores)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel4))
                    .addComponent(botonCerrarSesion))
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {BotonEgresoV, botonArqueoCaja, botonArqueoUsuario, botonIngresoV, jButtonActualizarLista, jButtonMovimientoCaja});

        pack();
    }// </editor-fold>//GEN-END:initComponents
   

    // ---------------------------------------------------------
    // ------- Seccion de metodos privados 
    // --------------------------------------------------------- 

    /**
     * Metodo encargado de retornar un string correspondiente al tipo
     * de automotor pasado como parametro
     * @param tipoAuto Representa el tipo de automotor a chequear
     * @return tipo
     */
    private String tipoDeMovil (Object tipoAuto){
        String tipo = "";
        if(tipoAuto.toString().compareTo("0") == 0){
            tipo = "Automovil";
        }
        else{
            if(tipoAuto.toString().compareTo("1") == 0){
                tipo = "Camioneta";
            }
            else{
                if(tipoAuto.toString().compareTo("2") == 0){
                    tipo = "Motocicleta";
                }
                else{
                    if(tipoAuto.toString().compareTo("3") == 0){
                        tipo = "Bicicleta";
                    }
                    else{
                        tipo = "Utilitario";
                    }
                }
            }
        }
        return tipo;
    }// Fin tipoDeMovil


    /**
     * Metodo encargado de buscar el dominio del vehiculo a partir de 
     * una fila seleccionada de la base de datow
     * @param selectedRow Representa la fila seleccionada
     * @return dominio
     * @throws SQLException 
     */
    private String buscarDominio(int selectedRow) throws SQLException {
        manejadorEstadia mc = new manejadorEstadia(this.conexion);
        ResultSet listaClientes = mc.buscarEstadiaOcupado();
        String dominio = "";
        int i = 0;
        if (listaClientes.next()){
            while (i < selectedRow && listaClientes.next()){
                i++;
            }
            dominio = listaClientes.getString("dominiovehiculo");
        }
        return dominio;
    }// Fin buscarDominio
    
    
    /**
     * Metodo encargado de levantar una instancia de la interfaz de nuevo cliente
     * @param evt Representa el evento del click
     */
    private void jMenuItemNuevoClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemNuevoClienteActionPerformed
        nuevoCliente nc = new nuevoCliente(this.conexion);
        nc.setVisible(true);
    }//GEN-LAST:event_jMenuItemNuevoClienteActionPerformed

    
    /**
     * Metodo encargado de levantar una instancia de la interfaz de modificacion de
     * un cliente
     * @param evt Representa el evento del click
     */
    private void jMenuItemModificarClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemModificarClienteActionPerformed
        clienteAModificar cam = new clienteAModificar(this.conexion);
        cam.setVisible(true);
    }//GEN-LAST:event_jMenuItemModificarClienteActionPerformed

    
    /**
     * Metodo encargado de levantar una instancia de la interfaz de ingreso de un
     * nuevo vehiculo
     * @param evt Representa el evento del click
     */
    private void botonIngresoVActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonIngresoVActionPerformed
        marcarIngreso mi = new marcarIngreso(this.conexion, this);
        mi.setVisible(true);
    }//GEN-LAST:event_botonIngresoVActionPerformed

    
    /**
     * Metodo encargado de levantar una instancia de la interfaz de egreso de un
     * vehiculo de la cochera
     * @param evt Representa el evento del click
     */
    private void BotonEgresoVActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BotonEgresoVActionPerformed
        String dominio = "";
        marcarSalida ms = null;
        if(this.tablaEstadias.getRowSelectionAllowed()){
            // Se elimina el vehiculo seleccionado en la tabla
            try {
                dominio = buscarDominio(this.tablaEstadias.getSelectedRow());
            } 
            catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Se ha producido un error interno al intentar darle de baja al vehículo", 
                        "Egreso de vehículo fallido", JOptionPane.ERROR_MESSAGE);
            }           
            try {
                ms = new marcarSalida(this.conexion, this, this.dniUsuarioActual, dominio);
            } 
            catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Se ha producido un error interno al crear la interfaz de egreso de vehículo",
                        "Error de interfaz", JOptionPane.ERROR_MESSAGE);
            }
            ms.setVisible(true);
        }
        else{
            // Se elimina el primer vehiculo de la tabla
            try {
                ms = new marcarSalida(this.conexion, this, this.dniUsuarioActual);
            } 
            catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Se ha producido un error interno al crear la interfaz de egreso de vehículo",
                        "Error de interfaz", JOptionPane.ERROR_MESSAGE);
            }
            ms.setVisible(true);
        }
    }//GEN-LAST:event_BotonEgresoVActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de modificacion de un vehiculo
     * correspondiente a un cliente determinado
     * @param evt Representa el evento del click
     */
    private void jMenuItemModificarVehiculoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemModificarVehiculoActionPerformed
        vehiculoAModificar vam = new vehiculoAModificar (this.conexion);
        vam.setVisible(true);
    }//GEN-LAST:event_jMenuItemModificarVehiculoActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de eliminacion de un vehiculo
     * correspondiente a un cliente determinado
     * @param evt Representa el evento del click
     */
    private void jMenuItemEliminarVehiculoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemEliminarVehiculoActionPerformed
        removerVehiculo rv = new removerVehiculo (this.conexion);
        rv.setVisible(true);
    }//GEN-LAST:event_jMenuItemEliminarVehiculoActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de ingreso de un nuevo vehiculo
     * correspondiente a un cliente determinado
     * @param evt Representa el evento del click
     */
    private void jMenuItemNuevoVehiculoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemNuevoVehiculoActionPerformed
        nuevoVehiculo nv = new nuevoVehiculo(this.conexion);
        nv.setVisible(true);
    }//GEN-LAST:event_jMenuItemNuevoVehiculoActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de configuracion de tarifas de la
     * cochera
     * @param evt Representa el evento del click
     */
    private void jMenuItemConfigurarCocheraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemConfigurarCocheraActionPerformed
        configuracionCochera cc = null;
        try {
            cc = new configuracionCochera(this.conexion);
            cc.setVisible(true);
        } 
        catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Se ha producido un error interno al levantar la interfaz de configuracion "
                    + "de las tarifas de la cochera", "Error de interfaz",JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItemConfigurarCocheraActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz del listado de todos los datos de 
     * los clientes de la base de datos
     * @param evt Representa el evento del click
     */
    private void jMenuItemMostrarDatosDeClientesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemMostrarDatosDeClientesActionPerformed
        listarClientes lc = new listarClientes(this.conexion);
        lc.setVisible(true);
    }//GEN-LAST:event_jMenuItemMostrarDatosDeClientesActionPerformed

    
    /**
     * Metodo encargado de actualizar los valores de la lista de vehiculos junto con
     * el campo de texto de capacidad corriente de la cochera
     * @param evt Representa el evento del click
     */
    private void jButtonActualizarListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonActualizarListaActionPerformed
        try {
            manejadorCochera mc = new manejadorCochera(this.conexion);
            this.capacidad = mc.getCantidad();
            actualizarVistaEstadia();
        } 
        catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Se ha producido un error interno al actualizar la lista de vehículos", 
                    "Error de interfaz", JOptionPane.ERROR_MESSAGE);
        }
}//GEN-LAST:event_jButtonActualizarListaActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de movimientos de caja y realizar
     * el/los mismos
     * @param evt Representa el evento del click 
     */
    private void jButtonMovimientoCajaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonMovimientoCajaActionPerformed
        movimientoCaja mc = new movimientoCaja(this.conexion, this.dniUsuarioActual);
        mc.setVisible(true);
    }//GEN-LAST:event_jButtonMovimientoCajaActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de nuevo usuario
     * @param evt Representa el evento del click
     */
    private void jMenuItemNuevoUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemNuevoUsuarioActionPerformed
        nuevoUsuario nu = new nuevoUsuario(this.conexion);
        nu.setVisible(true);
    }//GEN-LAST:event_jMenuItemNuevoUsuarioActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de eliminacion de usuario
     * @param evt Representa el evento del click
     */
    private void jMenuItemEliminarUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemEliminarUsuarioActionPerformed
        removerUsuario ru = new removerUsuario(this.conexion);
        ru.setVisible(true);
    }//GEN-LAST:event_jMenuItemEliminarUsuarioActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de modificacion de usuario
     * @param evt Representa el evento del click
     */
    private void jMenuItemModificarUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemModificarUsuarioActionPerformed
        usuarioAModificar uam = new usuarioAModificar(this.conexion);
        uam.setVisible(true);
    }//GEN-LAST:event_jMenuItemModificarUsuarioActionPerformed

    
    /**
     * Metodo encargado de realizar el arqueo de caja por usuario y levantar una 
     * interfaz con el resumen del mismo
     * @param evt Representa el evento del click
     */
    private void botonArqueoUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonArqueoUsuarioActionPerformed
        manejadorCaja mc = new manejadorCaja(this.conexion);
        manejadorEstadia me = new manejadorEstadia(this.conexion);
        String fecha = me.calcularFecha();
        String datosResumen = "";
        ResultSet res = null;
        try {
            res = mc.buscarPorFechaYUsuario(fecha, this.dniUsuarioActual);
            datosResumen = mc.hacerArqueoDeCaja("X", res, this.dniUsuarioActual);
            JOptionPane.showMessageDialog(null, datosResumen, "Arqueo de Usuario: "+ this.dniUsuarioActual, JOptionPane.PLAIN_MESSAGE);
            this.setVisible(true);
        } 
        catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se ha producido un error interno al generar el arqueo de caja por"
                    + "usuario", "Error de interfaz", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_botonArqueoUsuarioActionPerformed

    
    /**
     * Metodo encargado de realizar el arqueo de caja diario y levantar una 
     * interfaz con el resumen del mismo
     * @param evt Representa el evento del click
     */
    private void botonArqueoCajaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonArqueoCajaActionPerformed
        manejadorCaja mc = new manejadorCaja(this.conexion);
        manejadorEstadia me = new manejadorEstadia(this.conexion);
        String fecha = me.calcularFecha();
        String datosResumen = "";
        ResultSet res = null;
        try {
            res = mc.buscarPorFecha(fecha);
            datosResumen = mc.hacerArqueoDeCaja("Z", res, "Cierre");
            JOptionPane.showMessageDialog(null, datosResumen, "Cierre de caja diario", JOptionPane.PLAIN_MESSAGE);
            this.setVisible(true);
        } 
        catch (Exception ex) { 
            JOptionPane.showMessageDialog(null, "Se ha producido un error interno al generar el arqueo de caja diario",
                    "Error de interfaz", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_botonArqueoCajaActionPerformed

    
    /**
     * Metodo encargado de cerrar la sesion corriente y levantar la interfaz con
     * el resumen de movimientos de caja que hubo en dicha sesion
     * @param evt Representa el evento del click 
     */
    private void botonCerrarSesionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCerrarSesionActionPerformed
        manejadorCaja mc = new manejadorCaja(this.conexion);
        manejadorEstadia me = new manejadorEstadia(this.conexion);
        String fecha = me.calcularFecha();
        String datosResumen = "";
        ResultSet res = null;
        try {
            res = mc.buscarPorFechaYUsuario(fecha, this.dniUsuarioActual);
            datosResumen = mc.hacerArqueoDeCaja("X", res, this.dniUsuarioActual);
            this.dispose();
            JOptionPane.showMessageDialog(null, datosResumen, "Arqueo de Usuario: "+ this.dniUsuarioActual, JOptionPane.PLAIN_MESSAGE);
            loginUsuario login = new loginUsuario(this.conexion);
            login.setVisible(true);
        } 
        catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se ha producido un error interno al cerrar la sesion"
                    + "y levantar el resumen de movimientos de caja", "Error de interfaz", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_botonCerrarSesionActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de nuevo administrador
     * @param evt Representa el evento del click
     */
    private void jMenuItemNuevoAdministradorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemNuevoAdministradorActionPerformed
        nuevoAdministrador na = new nuevoAdministrador(this.conexion);
        na.setVisible(true);
    }//GEN-LAST:event_jMenuItemNuevoAdministradorActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de modificacion de administrador
     * @param evt Representa el evento del click
     */
    private void jMenuItemModificarAdministradorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemModificarAdministradorActionPerformed
        administradorAModificar aam = new administradorAModificar(this.conexion);
        aam.setVisible(true);
    }//GEN-LAST:event_jMenuItemModificarAdministradorActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de eliminacion de administrador
     * @param evt Representa el evento del click
     */
    private void jMenuItemEliminarAdministradorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemEliminarAdministradorActionPerformed
        removerAdministrador ra = new removerAdministrador(conexion);
        ra.setVisible(true);
    }//GEN-LAST:event_jMenuItemEliminarAdministradorActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz con los desarrolladores del sistema
     * @param evt Representa el evento del click
     */
    private void jMenuItemContactoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemContactoActionPerformed
        JOptionPane.showMessageDialog(null,"\n" +
                                           "Desarrolladores:\n" +
                                           "                Battistini, Luciano.\n" +
                                           "                Boretto, Martin.\n" +
                                           "\n" +
                                           "Telefonos de contacto:\n" +
                                           "                      0358-156004289\n" +
                                           "                      0358-154206995\n" +
                                           "\n" +
                                           "Email de Contacto:\n" +
                                           "                  lucianodb_3@gmail.com\n" +
                                           "                  martinboretto@gmail.com",
                                           "Sistema de Cocheras B&B",JOptionPane.PLAIN_MESSAGE);
    }//GEN-LAST:event_jMenuItemContactoActionPerformed

    
    /**
     * Metodo encargado de abrir la ventana de todos los arqueos de caja realizados
     * @param evt Representa el evento del click
     */
    private void jMenuItemAbrirCarpetaArqueosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemAbrirCarpetaArqueosActionPerformed
        try {
            Runtime.getRuntime().exec("explorer.exe D:\\Arqueos de Cajas - B&B\\");
        } 
        catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Aún no se ha realizado ningón arqueo de caja", "Arqueos de caja", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItemAbrirCarpetaArqueosActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de registro de pago de un determinado
     * cliente
     * @param evt Representa el evento del click 
     */
    private void jMenuItemRegistrarPagoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemRegistrarPagoActionPerformed
        pagoCliente pc = new pagoCliente(this.conexion, this.dniUsuarioActual);
        pc.setVisible(true);
    }//GEN-LAST:event_jMenuItemRegistrarPagoActionPerformed

    
    /**
     * Metodo encargado de levantar la interfaz de eliminacion de un cliente
     * @param evt Representa el evento del click
     */
    private void jMenuItemEliminarClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemEliminarClienteActionPerformed
        removerCliente rc = new removerCliente(this.conexion);
        rc.setVisible(true);
    }//GEN-LAST:event_jMenuItemEliminarClienteActionPerformed

    
    /**
     * Metodo encargado de realizar el arqueo periodico.
     * @param evt Representa el evento del click
     */
    private void jMenuItemArqueoPeriodicoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemArqueoPeriodicoActionPerformed
        manejadorCaja mc = new manejadorCaja(this.conexion);
        manejadorEstadia me = new manejadorEstadia(this.conexion);
        String fecha = me.calcularFecha();
        String datosResumen = "";
        ResultSet res = null;
        try {
            res = mc.buscarPorFechaAdministrador(fecha);
            datosResumen = mc.hacerArqueoDeCaja("Z", res, "Cierre");
            JOptionPane.showMessageDialog(null, datosResumen, "Cierre de Caja Periodico", JOptionPane.PLAIN_MESSAGE);
            this.setVisible(true);
        } 
        catch (Exception ex){ 
            JOptionPane.showMessageDialog(null,"Se ha producido un error interno al generar el arqueo de caja diario",
                    "Error arqueo periódico",JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItemArqueoPeriodicoActionPerformed

    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton BotonEgresoV;
    private javax.swing.JButton botonArqueoCaja;
    private javax.swing.JToggleButton botonArqueoUsuario;
    private javax.swing.JButton botonCerrarSesion;
    private javax.swing.JButton botonIngresoV;
    private javax.swing.JButton jButtonActualizarLista;
    private javax.swing.JButton jButtonMovimientoCaja;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabelClientes;
    private javax.swing.JLabel jLabelClientesT;
    private javax.swing.JLabel jLabelDesarrolladores;
    private javax.swing.JLabel jLabelLugaresDisponibles;
    private javax.swing.JLabel jLabelLugaresDisponiblesT;
    private javax.swing.JLabel jLabelLugaresOcupados;
    private javax.swing.JLabel jLabelLugaresOcupadosT;
    private javax.swing.JLabel jLabelProximoLugar;
    private javax.swing.JLabel jLabelUsuarioCorriente;
    private javax.swing.JMenu jMenu5;
    private javax.swing.JMenu jMenu6;
    private javax.swing.JMenu jMenu7;
    private javax.swing.JMenu jMenu8;
    private javax.swing.JMenu jMenuAdministradores;
    private javax.swing.JMenu jMenuArchivo;
    private javax.swing.JMenu jMenuAyuda;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JMenuBar jMenuBar3;
    private javax.swing.JMenu jMenuCliente;
    private javax.swing.JMenu jMenuConfiguracion;
    private javax.swing.JMenuItem jMenuItemAbrirCarpetaArqueos;
    private javax.swing.JMenuItem jMenuItemArqueoPeriodico;
    private javax.swing.JMenuItem jMenuItemConfigurarCochera;
    private javax.swing.JMenuItem jMenuItemContacto;
    private javax.swing.JMenuItem jMenuItemEliminarAdministrador;
    private javax.swing.JMenuItem jMenuItemEliminarCliente;
    private javax.swing.JMenuItem jMenuItemEliminarUsuario;
    private javax.swing.JMenuItem jMenuItemEliminarVehiculo;
    private javax.swing.JMenuItem jMenuItemModificarAdministrador;
    private javax.swing.JMenuItem jMenuItemModificarCliente;
    private javax.swing.JMenuItem jMenuItemModificarUsuario;
    private javax.swing.JMenuItem jMenuItemModificarVehiculo;
    private javax.swing.JMenuItem jMenuItemMostrarDatosDeClientes;
    private javax.swing.JMenuItem jMenuItemNuevoAdministrador;
    private javax.swing.JMenuItem jMenuItemNuevoCliente;
    private javax.swing.JMenuItem jMenuItemNuevoUsuario;
    private javax.swing.JMenuItem jMenuItemNuevoVehiculo;
    private javax.swing.JMenuItem jMenuItemRegistrarPago;
    private javax.swing.JMenu jMenuUsuarios;
    private javax.swing.JMenu jMenuVehiculos;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPopupMenu.Separator jSeparator1;
    private javax.swing.JPopupMenu.Separator jSeparator2;
    private javax.swing.JPopupMenu.Separator jSeparator3;
    private javax.swing.JLabel labelProximaLugar;
    private javax.swing.JLabel nombreUsuario;
    private javax.swing.JTable tablaEstadias;
    // End of variables declaration//GEN-END:variables

}// Fin clase sistemaPrincipal
